﻿namespace EasyDDD.Domain
{
    public interface IDomainEntity
    {
        bool IsDeleted { get; }

        Guid TenantId { get; }

        Guid RowVersion { get; }

        IReadOnlyCollection<IDomainEvent> DomainEvents { get; }

        object[] GetKey();

        void Delete();

        void AddDomainEvent(IDomainEvent item);

        void RemoveDomainEvent(IDomainEvent item);

        void ClearDomainEvent();
    }

    public interface IDomainEntity<TKey> : IDomainEntity
    {
        TKey Id { get; }

        void Add();

        //表示对象是否为全新创建的，未持久化的
        bool IsTransiented();
    }
}
